iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 16
0
Software Development

Swift零基礎實作旅遊景點app系列 第 16

Swift從零開始-Day16: UIWebView及下載圖片基礎學習(2)

  • 分享至 

  • xImage
  •  

1-1. 延續昨天學到的以URLSession來抓取圖片,接著繼續討論以URLSession的downloadTask來下載圖片,用此方法的話會在下載的時候也存到手機的一個url。

  • 同樣先產生一個URLSession的實體。
  • 產生一個URL。
  • 呼叫URLSession的downloadTask方法。
override func viewDidLoad() {
        super.viewDidLoad()
        let imageAddress = "http://p9.pstatp.com/origin/2ed20004b67c9d120a4e"
        
        //產生URLSession的實體
        let session = URLSession(configuration: .default)
        //產生URL
        if let imageUrl = URL(string: imageAddress){
            //呼叫downloadTask方法
            let newTask = session.downloadTask(with: imageUrl, completionHandler: { (/*此url指的是下載下來的資料在手機上的url跟前面的url不一樣*/url:URL?, response:URLResponse?, error:Error?) in
                //如果有錯誤
                if error != nil{
                    print(error?.localizedDescription)
                    return
                }else{
                    if let downloadUrl = url{
                        //用檔案在手機內的位置去產生一個Data
                        do{
                           let downloadData = try Data(contentsOf: downloadUrl)
                           let loadedImage = UIImage(data: downloadData)
                            DispatchQueue.main.async {
                                self.myImageView.image = loadedImage
                            }
                        }catch {
                            print(error.localizedDescription)
                        }   
                    }
                }
            })
            newTask.resume()
        }     
    }

1-2. 確定有沒有網路狀態:利用apple Reachability

  • 利用apple寫的這個資料庫,可以使我們在下載前確認是否有網路供我們使用。
  • 下載apple Reachability並匯入到我們自己的專案中,注意此code為Objective-C檔案,要建立Bridging後輸入#import "檔案名稱"
  • 在上面的程式碼newTask.resume()前面加入
let testReachability = Reachability(hostName: "www.google.com.tw")
            if testReachability?.currentReachabilityStatus().rawValue == 0{
                print("there is no internet")
            }else{
                print("The internet is fine")
            }

PS: hostName指的是測試網頁,如果可以成功連上這個網站,就代表網路ok,才去執行後面的事情。


上一篇
Swift從零開始-Day15: UIWebView及下載圖片基礎學習
下一篇
Swift從零開始-Day17: Error Handling學習
系列文
Swift零基礎實作旅遊景點app30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言